
[dbo].[asi_IsVatTaxableOrder]
CREATE PROCEDURE [dbo].[asi_IsVatTaxableOrder]
@orgCode varchar(5),
@billToID varchar(10),
@shipToID varchar(10),
@shipToCountry varchar(25),
@applyVat bit = NULL OUT,
@vatCountryCode varchar(2) = NULL OUT
AS
BEGIN
DECLARE @taxOnShipTo bit
DECLARE @orgVatCountryCode varchar(2)
DECLARE @contactIsVatExempt bit
DECLARE @contactVatRegNumber varchar(25)
DECLARE @contactVatCountryCode varchar(2)
DECLARE @billToVatCountryCode varchar(2)
DECLARE @shipToVatCountryCode varchar(2)
SET @applyVat = 0
SET @vatCountryCode = ''
IF NOT EXISTS (SELECT 1
FROM [dbo].[LicenseLegacyList]
WHERE [LegacyLicenseCode]='VAT')
BEGIN
GOTO ReturnValue
END
IF LEN(ISNULL(@orgCode, ''))=0
BEGIN
SELECT @orgCode = o.[OrgCode], @orgVatCountryCode = o.[VATCountry]
FROM [dbo].[Org_Control] o
WHERE o.[DefaultFlag]=1 AND o.[UseVATTaxation]=1 AND LEN(o.[VATCountry])>0
END
ELSE
BEGIN
SELECT @orgVatCountryCode = o.[VATCountry]
FROM [dbo].[Org_Control] o
WHERE o.[OrgCode]=@orgCode AND o.[UseVATTaxation]=1 AND LEN(o.[VATCountry])>0
END
IF @@ROWCOUNT=0
BEGIN
GOTO ReturnValue
END
SET @applyVat = 1
SET @vatCountryCode = @orgVatCountryCode
SELECT @taxOnShipTo = CASE WHEN [ShortValue]='YES' THEN 1 ELSE 0 END
FROM [dbo].[System_Params]
WHERE [ParameterName] = 'AR_Control.TaxOnShipTo'
IF @@ROWCOUNT=0
BEGIN
SET @taxOnShipTo = 0
END
IF @taxOnShipTo = 1
BEGIN
IF LEN(ISNULL(@shipToID, ''))=0
BEGIN
GOTO ReturnValue
END
SELECT @contactIsVatExempt = ISNULL(nf.[USE_VAT_TAXATION],0),
@contactVatRegNumber = ISNULL(nf.[VAT_REG_NUMBER],''),
@contactVatCountryCode = ISNULL(nf.[VAT_COUNTRY],'')
FROM [dbo].[Name] n
LEFT OUTER JOIN [dbo].[Name_Fin] nf ON n.[ID] = nf.[ID]
WHERE n.[ID]=@shipToID
IF @@ROWCOUNT=0
BEGIN
GOTO ReturnValue
END
IF @contactIsVatExempt=1
BEGIN
SET @applyVat = 0
GOTO ReturnValue
END
SET @shipToVatCountryCode = @orgVatCountryCode
IF LEN(ISNULL(@shipToCountry,''))>0
BEGIN
IF LEN(@shipToCountry)<=2
BEGIN
SELECT @shipToVatCountryCode = c.[VAT_COUNTRY_CODE]
FROM [dbo].[Country_Names] c
WHERE c.[COUNTRY_CODE] = @shipToCountry
END
ELSE
BEGIN
SELECT @shipToVatCountryCode = c.[VAT_COUNTRY_CODE]
FROM [dbo].[Country_Names] c
WHERE c.[COUNTRY] = @shipToCountry
END
END
IF LEN(@contactVatRegNumber)>0 AND LEN(@contactVatCountryCode)>0 AND @contactVatCountryCode=@shipToVatCountryCode
BEGIN
IF (@contactVatCountryCode != @orgVatCountryCode)
BEGIN
SET @applyVat = 0
GOTO ReturnValue
END
END
IF LEN(@shipToVatCountryCode)>0
BEGIN
SET @vatCountryCode = @shipToVatCountryCode
END
ELSE
BEGIN
SET @applyVat = 0
END
END
ELSE
BEGIN
IF LEN(ISNULL(@billToID, ''))=0
BEGIN
GOTO ReturnValue
END
SELECT @contactIsVatExempt = ISNULL(nf.[USE_VAT_TAXATION],0),
@contactVatRegNumber = ISNULL(nf.[VAT_REG_NUMBER],''),
@contactVatCountryCode = ISNULL(nf.[VAT_COUNTRY],'')
FROM [dbo].[Name] n
LEFT OUTER JOIN [dbo].[Name_Fin] nf ON n.[ID] = nf.[ID]
WHERE n.[ID]=@billToID
IF @@ROWCOUNT=0
BEGIN
GOTO ReturnValue
END
IF @contactIsVatExempt=1
BEGIN
SET @applyVat = 0
GOTO ReturnValue
END
IF LEN(@contactVatCountryCode)>0
BEGIN
SET @billToVatCountryCode = @contactVatCountryCode
END
ELSE
BEGIN
SELECT @billToVatCountryCode = c.[VAT_COUNTRY_CODE]
FROM [dbo].[Name_Address] n
INNER JOIN [dbo].[Country_Names] c ON n.[COUNTRY] = c.[COUNTRY]
WHERE n.[ID] = @billToID AND n.[PREFERRED_BILL]=1 AND LEN(ISNULL(n.[COUNTRY],''))>0
IF @@ROWCOUNT=0
BEGIN
SET @billToVatCountryCode = @orgVatCountryCode
END
END
IF LEN(@contactVatRegNumber)>0
BEGIN
IF (@billToVatCountryCode != @orgVatCountryCode)
BEGIN
SET @applyVat = 0
GOTO ReturnValue
END
END
IF LEN(@billToVatCountryCode)>0
BEGIN
SET @vatCountryCode = @billToVatCountryCode
END
ELSE
BEGIN
SET @applyVat = 0
END
END
ReturnValue:
IF @applyVat = 0
BEGIN
SET @vatCountryCode = ''
END
SELECT @applyVat AS [ApplyVat], @vatCountryCode AS [VatCountryCode]
END
GO